#ifndef _NTC_DRV_H_
#define _NTC_DRV_H_
#include "gd32f30x.h"
#include <stdio.h>
#include <math.h>
#include "dwt_delay.h"
#include <stdbool.h>
// 引脚相关
#define NTC_GPIO       GPIOC
#define NTC_GPIO_PIN   GPIO_PIN_3
#define NTC_GPIO_RCU   RCU_GPIOC

// ADC外设 
//adc转换一次的时间大概是 13.5+12.5个周期 0.86667μs 其中12.5是固定时间 13.5根据频率和阻抗计算得出的
#define NTC_ADC_X                ADC0
#define NTC_ADC_X_RCU            RCU_ADC0
#define NTC_ADC_X_CLOCK_DIV      RCU_CKADC_CKAPB2_DIV4 //分频系数
#define NTC_ADC_X_CHANNEL        ADC_CHANNEL_13
#define NTC_ADC_X_TRANS_CYCLES   ADC_SAMPLETIME_13POINT5	

#define NTC_B        (3950.0f)   // B值（通常3000-4000）
#define NTC_RP       (10000.0f)  // 25℃时的参考电阻（10kΩ）
#define NTC_T0       (298.15f)   // 参考开尔文温度（25℃ = 25+298.15K）

#define NTE_DEFAULT_TIMEOUT 10 // 默认的超时时间 5us
#define NTE_DELAY_US(x)    DwtDelayNus(x) // NTC 延时

/**
 * @desc  : ntc驱动初始化
 * @date  : 2025-09-27
 * @author: AnRui
 * @note  :
 */
bool ntc_drv_init(void);

/**
 * @desc  : 触发ntc采样并获取温度值
 * @date  : 2025-11-05
 * @author: AnRui
 * @return: int
 * @note  : 返回值是测量值的1000倍
 *          返回值小于0代表获取失败
 */
int ntc_trigger_and_get_temp(void);

#endif
